package com.itany.corejava.code14_lambda;

import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;

/**
 * @author MissChen
 * @date 2024年03月25日 14:37
 */
public class Test04_断言型接口 {

    public static void main(String[] args) {
        List<String> list= Arrays.asList("北京","上海","苏州","杭州","无锡","南京");
        // testPredicate(new Predicate<String>() {
        //     @Override
        //     public boolean test(String s) {
        //
        //         return s.contains("京");
        //     }
        // },list);
        //Lambda表达式
        testPredicate(s->s.contains("州"),list);

    }
    /**
     * 断言型接口Predicate<T>，方法: boolean test(T t);
     * 其接口泛型类型与方法的参数类型一致
     * 其方法返回值是一个布尔类型，一般用于判断给定的参数是否符合指定规则
     * 具体规则由方法调用者实现
     * @param predicate
     * @param list
     */
    public static void testPredicate(Predicate<String> predicate, List<String> list){
        for(String s:list){
            if(predicate.test(s)){
                //当断言型接口方法返回true，则打印对应内容
                System.out.println(s);
            }
        }
    }
}
